//
// Created by Jisam on 2024/7/24 21:40.
// solve P1433 吃奶酪 状压DP
// 动态规划解决奶酪问题，状态压缩表示所有点是否被访问过

#include <bits/stdc++.h>

// 定义各种常用的类型别名
#define PSI pair<string,int>
#define PII pair<int,int>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>

// 定义优先队列的别名，一个为大根堆，一个为小根堆
#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
#define i64 long long

// 使用标准库命名空间
using namespace std;

// 全局变量用于存储最终答案
double ans;

// 计算两点之间的距离
double dis(int i, int j, vector<pair<double, double>> &arr) {
    // 使用欧几里得距离公式
    return sqrt((arr[i].first - arr[j].first) * (arr[i].first - arr[j].first) +
                (arr[i].second - arr[j].second) * (arr[i].second - arr[j].second));
}

// 主函数，解决问题
void solve() {
    // 输入点的数量
    int n;
    cin >> n;
    // 初始化距离矩阵和动态规划状态数组
    vector<vector<double>> dist(n + 5, vector<double>(n + 5, 0)), f(n + 5, vector<double>(1 << (n + 1), numeric_limits<double>::max()));
    // 存储点的坐标
    vector<pair<double, double>> a(n + 5);
    // 初始化答案为从原点到第一个点的距离
    ans = f[0][0];
    // 输入所有点的坐标
    for (int i = 1; i <= n; i++) {
        cin >> a[i].first >> a[i].second;
    }
    // 设置原点坐标
    a[0] = {0, 0};
    // 计算所有点对之间的距离
    for (int i = 0; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            dist[i][j] = dis(i, j, a);
            dist[j][i] = dist[i][j];
        }
    }
    // 初始化动态规划状态数组的第一个点
    for (int i = 1; i <= n; i++) {
        f[i][1 << (i - 1)] = dist[0][i];
    }
    // 动态规划填表，状态转移方程
    for (int k = 1; k < (1 << n); k++) {
        for (int i = 1; i <= n; i++) {
            if ((k & (1 << (i - 1))) == 0) continue;
            for (int j = 1; j <= n; j++) {
                if (i == j) continue;
                if ((k & (1 << (j - 1))) == 0) continue;
                f[i][k] = min(f[i][k], f[j][k ^ (1 << (i - 1))] + dist[i][j]);
            }
        }
    }
    // 找出所有状态中的最小值作为答案
    for (int i = 1; i <= n; i++) {
        ans = min(ans, f[i][(1 << n) - 1]);
    }
    // 输出答案
    cout << fixed << setprecision(2) << ans;
}

// 程序入口
int main() {
    // 关闭同步标准输入输出，提高效率
    ios::sync_with_stdio(false);
    // 解除cin与cout的绑定
    cin.tie(nullptr);
    // 设置测试用例数量
    int T = 1;
    while (T--) solve();
    return 0;
}
